package com.library.User.controller;

import com.library.User.model.User;
import com.library.User.model.UserExample;
import com.library.User.service.UserService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
public class UserController {
    
    private UserService userService;

    //通过构造器注入service
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    //查询数据
    @GetMapping("/user")
    @ResponseBody
    public List<User> list() {
        //1 构造查询条件
        //1.1 创建查询条件类
        UserExample example = new UserExample();
        //1.2 创建条件构造器
        UserExample.Criteria criteria = example.createCriteria();
        //1.3 通过criteria设置条件
        //...
        
        //2 根据条件查询，如果没有查询条件，传入一个空的example即可
        List<User> list = userService.selectByExample(example);
        
        //3 返回结果
        return list;
    }

    //添加数据
    @PostMapping("/user")
    @ResponseBody
    public User add(@RequestBody User user) {
        //1 准备数据，例如设置user主键等
        //...
        user.setId((int) (System.currentTimeMillis() % 1000000000));
        
        //2 插入数据
        userService.insertSelective(user);
        
        //3 把新添加的数据返回给调用者
        return user;
    }

    //修改数据
    @PutMapping("/user")
    @ResponseBody
    public User update(@RequestBody User user) {
        //1 准备数据，例如设置user的修改时间等
        //...
        
        //2 更新数据
        userService.updateByPrimaryKeySelective(user);
        
        //3 把新修改的数据返回给调用者
        return userService.selectByPrimaryKey(user.getId());
    }

    //删除数据
    @DeleteMapping("/user/{id}")
    @ResponseBody
    public String delete(@PathVariable("id") Integer id) {
        //1 根据主键删除数据
        userService.deleteByPrimaryKey(id);
        
        //2 返回一个状态码给调用者
        return "200";
    }
}